package com.aier.school.service;

import java.util.List;
import java.util.Map;

import com.aier.school.entity.TeacherAttendanceMonth;
import com.aier.school.entity.TeacherIcardInfo;
import com.aier.school.entity.TeacherIcardInfoState;


public interface ISchoolMonAttendService {

    /**
     * 根据教师名字排序
     */
    int TEACHER_SORTABLE_NAME=1;
    
    /**
     * 根据教师名字倒排序
     */
    int TEACHER_SORTABLE_NAME_DESC=2;
    
    /**
     * 根据职务名字排序
     */
    int TEACHER_SORTABLE_TYPENAME=3;
    
    /**
     * 根据职务名字倒排序
     */
    int TEACHER_SORTABLE_TYPENAME_DESC=4;

    /**
     * 根据进出校园排序
     */
    int TYPE_SORTABLE_INOUT=5;
    
    /**
     * 根据进出校园倒排序
     */
    int TYPE_SORTABLE_INOUT_DESC=6;
    
    /**
     * 根据进出校园时间排序
     */
    int CDATE_SORTABLE=7;
    
    /**
     * 根据进出校园时间倒排序
     */
    int CDATE_SORTABLE_DESC=8;
    
    
    
    /**
     * 根据taid查询单条月考勤信息
     * @param taid
     * @return
     */
    TeacherAttendanceMonth searchAttMontByTaid(Integer taid);
    
    /**
     * 根据条件分页查询出所有月考勤
     * @return
     */
    Map<String, Object> searchAttMonthsByCondition(int page,
            int pagesize, int sid,List<Long> tids, Integer year_begin, Integer month_begin,
            Integer year_end, Integer month_end);
    
    List<TeacherAttendanceMonth> searchAttMonthsByCondition(int sid, List<Long> tids, Integer year_begin, Integer month_begin,
            Integer year_end, Integer month_end);
    
    /**
     * 根据条件分页查询出指定教师所有月考勤
     * @return
     */
    Map<String, Object> searchTeacherAttMonthsByCondition(int page,
            int pagesize, int sortable, int tid, 
            Integer year_begin, Integer month_begin,
            Integer year_end, Integer month_end);

    List<TeacherAttendanceMonth> searchTeacherAttMonthsByCondition(int tid, 
            Integer year_begin, Integer month_begin);

    /**
     * 分页查询出taid的考勤明细
     * @param page
     */
    Map<String, Object> searchAttDetails(int page, int attendDetailListPagesize,
            int sortable, int sid, Long uid,Integer taid);
    
    /**
     * 根据条件分页查询出所有考勤明细
     * @return
     */
    Map<String, Object> searchAttDetailsByCondition(int page,int pagesize, int sid,
            List<Long> tids, String dayBeginValue, String dayEndValue);

    List<TeacherIcardInfo> searchAttDetailsByCondition(int sid,
            List<Long> tids, Integer year_begin, Integer month_begin,
            Integer year_end, Integer month_end);
    
    /**
     * 根据条件分页查询出指定教师所有考勤明细
     * @param page
     * @param attendDetailListPagesize
     * @param sortable
     * @param tid
     * @param dayBeginValue
     * @param dayEndValue
     * @return
     */
    Map<String, Object> searchTeacherAttDetailsByCondition(int page,
            int attendDetailListPagesize, int sortable, int tid,
            String dayBeginValue, String dayEndValue);

    List<TeacherIcardInfo> searchTeacherAttDetailsByCondition(int tid,
            String dayBeginValue);
    
    /**
     * 查询指定教师每月考勤状态
     * @param tid
     * @param year_begin
     * @param month_begin
     * @return
     */
    List<TeacherIcardInfoState> searchTeacherIcardInfoStates(int tid,
            Integer year_begin, Integer month_begin);


    
    
    
    
}
